package com.demo219_存在重复元素2;
/**
 * 使用一个固定大小的滑动窗口来实现
 *
 * 窗口大小为K , 每次向右滑动, 判断里面是否存在相同的元素
 */

import java.util.*;

public class Solution_滑动窗口 {
    public static void main(String[] args) {
        int[] ints={1,2,3,1,2,3};
        int k=2;
        boolean b = containsNearbyDuplicate(ints, k);
        System.out.println(b);
    }
    public static boolean containsNearbyDuplicate(int[] nums, int k) {

        int right=0;
        int left=0;
        if (nums.length<=k){
            TreeSet<Integer> set = new TreeSet<>();
            for (int i = 0; i < nums.length; i++) {
                if (!set.add(nums[i])){
                    return true;
                }
            }
        }
        while (right<=nums.length-1){
            if (right-left+1<k){
                right++;
            }else {
                //遍历从left -> right 的数组是否存在重复元素
                TreeSet<Integer> set = new TreeSet<>();
                for (int i=left;i<=right;i++){
                    if (!set.add(nums[i])){
                        return true;
                    }
                }
                left++;
                right++;
            }
        }
        return false;
    }
}
